package com.jason.library.scope

/**
 * @description: WithScopeFunctionMain
 *
 * @author ChenBaoyang
 * @date 6/30/21 14:53
 */
object WithScopeFunctionMain {

    @JvmStatic
    fun main(args: Array<String>) {
        withCharacteristic1()
    }
}

/**
 * with（T）类型传入了一个参数book，则可以在with的代码块中访问book的name和price属性，并做更改。
 * with使用的是非null的对象，当函数块中不需要返回值时，可以使用with，但是with还是支持返回字段
 * with和run一样，以“this”作为上下文对象
 */
fun withCharacteristic1() {
    val book = Book()

    with(book) {
        name = "《计算机网络》"
        price = 40
    }
    println(book)
}